package br.com.leopard.erp.gym.dao.base_sistema;

import java.util.List;

import javax.ejb.LocalBean;
import javax.ejb.Stateless;

import br.com.leopard.erp.gym.mapeamento.base_sistema.Modulo;
import br.com.leopard.erp.gym.mapeamento.base_sistema.Perfil;
import br.com.leopard.erp.gym.mapeamento.empresa.Empresa;
import br.com.leopard.erp.gym.persistence.AbstractDAO;
import br.com.leopard.erp.gym.persistence.ParametroQueryBuilder;

@Stateless
@LocalBean
public class ModuloDAO extends AbstractDAO<Modulo, Long> {

	public ModuloDAO() {
		super(Modulo.class);
	}

	public List<Modulo> getPerfisPorNomeModulo(String modulo) {
		String query = "Modulo.findByModulo";

		ParametroQueryBuilder builder = new ParametroQueryBuilder();
		builder.addParametro("modulo", modulo);

		return super.listNamedQuery(query, builder.getParametros());
	}

	public List<Modulo> getPerfisPorNomeModuloEID(String modulo, Long idModulo) {
		String query = "Modulo.findByModuloEIDModulo";

		ParametroQueryBuilder builder = new ParametroQueryBuilder();
		builder.addParametro("modulo", modulo);
		builder.addParametro("idModulo", idModulo);

		return super.listNamedQuery(query, builder.getParametros());
	}

	public List<Modulo> listarPorEmpresa(Empresa empresa) {
		String query = "Modulo.findModulosByEmpresaAtivo";

		ParametroQueryBuilder builder = new ParametroQueryBuilder();
		builder.addParametro("empresa", empresa);
		builder.addParametro("ativo", true);

		return super.listNamedQuery(query, builder.getParametros());
	}

	public List<Modulo> listarModulosAtivosPorEmpresaEPerfil(Empresa empresa, Perfil perfil) {
		String query = "Modulo.findModulosByEmpresaEPerfilAtivo";

		ParametroQueryBuilder builder = new ParametroQueryBuilder();
		builder.addParametro("empresa", empresa);
		builder.addParametro("perfil", perfil);
		builder.addParametro("ativo", true);

		return super.listNamedQuery(query, builder.getParametros());
	}

}
